PHP Pagination - แบ่งหน้าด้วย php Turn Back
2016-09-29 22:58:43
เป็น PHP ฟังก์ชั่น ที่ใช้สำหรับแบ่งหน้า ในกรณีดึงข้อมูลมาแสดงเป็น Item list
พร้อมกับ css จัดรูปแบบเพื่อความสะดวกใช้งาน
pagination.php
<?phpfunction displayPaging( $total, $limit, $pagenumber, $baseurl, $showpages ){// do calculations$pages = ceil($total / $limit);$offset = ($pagenumber * $limit) - $limit;$end = $offset + $limit;// prepare paging links$html .= '<div>';// if first link is neededif($pagenumber > 1) { $previous = $pagenumber -1;$html .= '<a href="'.$baseurl.'1">'.$icon_first.'</a> ';}// if previous link is neededif($pagenumber > 2) {$previous = $pagenumber -1;$html .= '<a href="'.$baseurl.''.$previous.'">'.$icon_previous.'</a> ';}// print page numbersif ($pages>=2) {$p=1;$html .= "";$pages_before = $pagenumber - 1;$pages_after = $pages - $pagenumber;$show_before = floor($showpages / 2);$show_after = floor($showpages / 2);if ($pages_before < $show_before){$dif = $show_before - $pages_before;$show_after = $show_after + $dif;}if ($pages_after < $show_after){$dif = $show_after - $pages_after;$show_before = $show_before + $dif;}$minpage = $pagenumber - ($show_before+1);$maxpage = $pagenumber + ($show_after+1);if ($pagenumber > ($show_before+1) && $showpages > 0) {$html .= " ... ";}while ($p <= $pages) {if ($p > $minpage && $p < $maxpage) {if ($pagenumber == $p) {$html .= " <span class="current">".$p."</span>";} else {$html .= ' <a href="'.$baseurl.$p.'">'.$p.'</a>';}}$p++;}if ($maxpage-1 < $pages && $showpages > 0) {$html .= " ... ";}}// if next link is neededif($end < $total) {$next = $pagenumber +1;if ($next != ($p-1)) {$html .= ' <a href="'.$baseurl.$next.'">'.$icon_next.'</a>';}}// if last link is neededif($end < $total) {$last = $p -1;$html .= ' <a href="'.$baseurl.$last.'">'.$icon_last.'</a>';}$html .= '</div>';// return paging linksreturn $html;}?>
ค่าตัวแปรต่างๆ ที่ส่งเข้าไปใน Function
$total เป็นจำนวน record ข้อมูลทั้งหมด
$limit จำนวน list record ที่ต้องการให้แสดงภายใน 1 หน้า
$offset คือ เลขหน้าที่ต้องการดู ใช้ส่งเป็น parameter ไปกับ url
$baseurl คือ url ของหน้านั้น (รวม offset)
$icon จำนวนของ paging icon ที่ต้องการแสดงให้กดเปลี่ยนหน้า
data_record.php
<?php
$con=mysqli_connect("localhost","my_user","my_password","my_db");
$sql = mysqli_query($con,"SELECT * FROM content");// Pagination$total = mysqli_num_rows($sql);$limit = 10;$icon = 10;$offset=htmlspecialchars(trim($_GET['off']));if($offset=='')$offset=1;$baseurl = "?page=".$page."&do=".$do."&off=";$baseurl .= $_GET[cat]!=""?"&cat=".$_GET[cat]:"";$page_start = ($limit*$offset)-$limit;include_once 'pagination.php';?>// แสดง Pagination
<div class="pagin"><?=displayPaging($total, $limit, $offset, $baseurl, $icon);?></div><?php$qry = mysqli_query($con,"SELECT * FROM content LIMIT $page_start , $limit ");while( $result = mysqli_fetch_array($qry) ){?>Fetch rows data from Database.<?} // Ending while loop?>
style.css
.pagin {padding: 2px 0;margin: 4px 0; font-weight: bold; width:100%}.pagin a, .pagin span {padding: 6px 8px; margin:0}.pagin a {background-color:#efefef; color:#666; text-decoration:none; border:solid 1px #efefef}.pagin a:visited {background-color: #efefef; color: #60606F; text-decoration: none}.pagin a:hover, .pagin a:active {border: solid 1px #cc0000; background-color: #fff; color: #cc0000; text-decoration: none}.pagin span {cursor: default; border: solid 1px #ddd; background-color: #f0f0f0; color: #b0b0b0}.pagin span.current {border: solid 1px #666; background-color: #666}